#ifndef UTILITY_H
#define UTILITY_H

#include <time.h>
#include <stdio.h>
#include "stdlib.h"
#include <cfloat> 

//distribution
#define DIS_UNIFORM 0
#define DIS_START 1
#define DIS_MID 2
#define DIS_END 3
#define DIS_RANDOM 4
//position
#define POS_UNIFORM 0


/*
Function description:
generate experiment data
@param 
*/
void generateExpData(float *largeArray, float *smallArray, int largeLength, int smallLength , int distribution, int position);

/*
Function description:
generate sorted data, duplications may occur
@param 
*/
void generateSortedData(float *sorted_data, int length,int disFactor = 1);


/*
Function description:
generate sorted data without duplications
@param 
*/
void generateSortedData_NODUP(float *sorted_data, int length);



/*
Function description:

@param length:
*/
void generateUnsortedData(float *unsorted_data, int length);



/*
Function description:

@param 
*/
void cudppScanUltra( unsigned int *d_out, unsigned int *d_in, size_t numElements);

#endif